﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;

namespace Microsoft.AspNetCore.Razor.Language;

public abstract class RazorProjectFileSystem : RazorProject
{
    internal static readonly RazorProjectFileSystem Empty = new EmptyProjectFileSystem();

    /// <summary>
    /// Create a Razor project file system based off of a root directory.
    /// </summary>
    /// <param name="rootDirectoryPath">The directory to root the file system at.</param>
    /// <returns>A <see cref="RazorProjectFileSystem"/></returns>
    public static RazorProjectFileSystem Create(string rootDirectoryPath)
    {
        if (string.IsNullOrEmpty(rootDirectoryPath))
        {
            throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(rootDirectoryPath));
        }

        return new DefaultRazorProjectFileSystem(rootDirectoryPath);
    }
}
